<?xml version="1.0"?><?xml-stylesheet type="text/xsl" href="http://www.codeplex.com/rss.xsl"?><rss version="2.0"><channel><title>LINQ to Lucene</title><link>http://www.codeplex.com/linqtolucene/Project/ProjectRss.aspx</link><description>Providing a custom LINQ solution for the Lucene Information Retrieval System, commonly referred to as a search-engine.  </description><item><title>New Post: Paul's LINQ to Lucene Questions</title><link>http://www.codeplex.com/linqtolucene/Thread/View.aspx?ThreadId=35088</link><description>&lt;div style="line-height: normal;"&gt;The issue of reinstantiating the data context is discussed further here - &lt;a href="http://www.codeplex.com/linqtolucene/Thread/View.aspx?ThreadId=33663"&gt;DataContext recycle discussion&lt;/a&gt;&lt;br&gt;
&lt;/div&gt;</description><author>CVertex</author><pubDate>Sun, 07 Sep 2008 10:08:17 GMT</pubDate><guid isPermaLink="false">New Post: Paul's LINQ to Lucene Questions 20080907100817A</guid></item><item><title>Created Issue: DatabaseIndexSet&lt;TDataContext&gt; should somehow re-instantiate the</title><link>http://www.codeplex.com/linqtolucene/WorkItem/View.aspx?WorkItemId=6072</link><description>see http&amp;#58;&amp;#47;&amp;#47;www.codeplex.com&amp;#47;linqtolucene&amp;#47;Thread&amp;#47;View.aspx&amp;#63;ThreadId&amp;#61;33663&lt;br /&gt;</description><author>CVertex</author><pubDate>Sun, 07 Sep 2008 10:07:42 GMT</pubDate><guid isPermaLink="false">Created Issue: DatabaseIndexSet&lt;TDataContext&gt; should somehow re-instantiate the 20080907100742A</guid></item><item><title>New Post: Paul's LINQ to Lucene Questions</title><link>http://www.codeplex.com/linqtolucene/Thread/View.aspx?ThreadId=35088</link><description>&lt;div style="line-height: normal;"&gt;Paul posted some questions about linq to lucene and it's usage on my blog. I responded via email but decided to post here for all interested.&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&lt;strong&gt;
&amp;quot;A couple quick questions. The Lucene docs say that for a web app, you&lt;br&gt;
should 'keep your index open' across postbacks, either via the app&lt;br&gt;
cache or static objects or whatever. Is that true for Linq-to-Lucene&lt;br&gt;
as well?&amp;quot;&lt;/strong&gt;&lt;br&gt;
&lt;br&gt;
Yup. Index&amp;lt;T&amp;gt; contains a property called Context (which is of type&lt;br&gt;
IndexContext). The index context instance contains the IndexModifier&lt;br&gt;
and IndexSearcher lucene instances which do all the magic under the&lt;br&gt;
hood. I've tried to hide this via encapsulation in a sensible way. If&lt;br&gt;
you keep your Index&amp;lt;T&amp;gt; or IndexSet or DatabaseIndexSet&amp;lt;TData&amp;gt; open and&lt;br&gt;
in your Application cache through the life of the &lt;a href="http://asp.net/"&gt;asp.net&lt;/a&gt; app, you can&lt;br&gt;
safely query/mod the index without instantiating anything you don't&lt;br&gt;
need to.&lt;br&gt;
&lt;br&gt;
&lt;strong&gt;&amp;quot;Second, how often would you recommend managing re-indexing? I was&lt;br&gt;
contemplating writing the index on application start, and then when&lt;br&gt;
new objects get added, do it through a repository object which then&lt;br&gt;
also writes them to the index, rather than re-indexing the whole db&lt;br&gt;
table again.&amp;quot;&lt;/strong&gt;&lt;br&gt;
&lt;br&gt;
Firstly, there is no ability to update documents in an index. To&lt;br&gt;
update a document, you must delete it then add it again.&lt;br&gt;
&lt;br&gt;
I've given updating the index alot of thought (and done it twice in&lt;br&gt;
production using the lucene api), but not yet come to a decision about&lt;br&gt;
how to make it easier for linq to lucene users. Ideally, I'd like to&lt;br&gt;
listen to ObjectTrackingManager &amp;nbsp;(or whatever its called) for changes&lt;br&gt;
and progressively update the index as SaveChanges is called. However,&lt;br&gt;
this approach will have definite performance issues. The approach you&lt;br&gt;
pick depends on a balance between performance (you don't want to&lt;br&gt;
update your index too often otherwise searchers are taken out of&lt;br&gt;
action too often) and up-to-datedness.&lt;br&gt;
&lt;br&gt;
On the previous two projects I've worked on, the index has been small&lt;br&gt;
enough to reindex the entire database (barring deactivated records,&lt;br&gt;
expired records etc) every hour then swap the index files across. If&lt;br&gt;
you can afford the CPU time and penalties of data being out of date by&lt;br&gt;
an hour, I'd follow this approach. Please let me know if you can't and&lt;br&gt;
we'll think about a smarter interim solution.&lt;br&gt;
&lt;br&gt;
I'm working on a batch indexing and update system at the moment but am&lt;br&gt;
running into sync issues I haven't been able to solve. This system&lt;br&gt;
will allow developers to choose &amp;quot;how&amp;quot; an index set is indexed. That&lt;br&gt;
is, if the indexing of tables is done in parallel, sequentially and&lt;br&gt;
how much to buffer in memory during. The updater will do something&lt;br&gt;
similar, contain a queue of documents that are &amp;quot;dirty&amp;quot;, then&lt;br&gt;
periodically or manually update each document.&lt;br&gt;
&lt;br&gt;
&lt;strong&gt;&amp;quot;Third, I wasn't clear from your description why I would want to&lt;br&gt;
tokenize, can you explain or link? &amp;quot;&lt;br&gt;
&lt;/strong&gt;&lt;br&gt;
Tokenization is necessary to let the term vector model do it's magic,&lt;br&gt;
and to allow terms within a field to be searchable. Tokenization is&lt;br&gt;
actually one phase of a process called field analysis. When a&lt;br&gt;
value/query must be converted into lucene field values, the chosen&lt;br&gt;
analyzer for that field/document is executed. Field analysis is a set&lt;br&gt;
of composable functions that convert a string into an array of values.&lt;br&gt;
Analyzers work to create the lowest string representation of a field&lt;br&gt;
such that variants are properly matched. SimpleAnalyzer for example,&lt;br&gt;
contains a whitespace tokenizer and lower caser. Without an analyzer&lt;br&gt;
on the field, Lucene will happily index the string as is, and casing&lt;br&gt;
will be trapped in the index.&lt;br&gt;
&lt;br&gt;
e.g. If ContactTitle wasn't analyzed, the following query wouldn't find anything&lt;br&gt;
&lt;br&gt;
var managers = from c in index.Get&amp;lt;Customer&amp;gt;&lt;br&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; where c.ContactTitle == &amp;quot;marketing manager&amp;quot;&lt;br&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; select c;&lt;br&gt;
&lt;br&gt;
Why? because all those customers have titles of &amp;quot;Marketing Manager&amp;quot;.&lt;br&gt;
Upon linq to object translation, linq to lucene will generate a&lt;br&gt;
TermQuery that tries to match the field value &amp;quot;marketing manager&amp;quot; with&lt;br&gt;
&amp;quot;Marketing Manager&amp;quot;. For speed (and usability), Lucene.net uses case&lt;br&gt;
sensitive string equality. This seems very strange for simple text&lt;br&gt;
fields, but becomes important when you need to index really long&lt;br&gt;
fields and strangely formatted fields.&lt;br&gt;
&lt;br&gt;
Hope that helps,&lt;br&gt;
&lt;span style="color:rgb(136, 136, 136)"&gt;-Vijay&lt;/span&gt;&lt;br&gt;
&lt;/div&gt;</description><author>CVertex</author><pubDate>Sun, 07 Sep 2008 10:05:45 GMT</pubDate><guid isPermaLink="false">New Post: Paul's LINQ to Lucene Questions 20080907100545A</guid></item><item><title>Source code checked in, #23910</title><link>http://www.codeplex.com/linqtolucene/SourceControl/ListDownloadableCommits.aspx</link><description>Changed to struct</description><author>CVertex</author><pubDate>Sun, 07 Sep 2008 08:56:01 GMT</pubDate><guid isPermaLink="false">Source code checked in, #23910 20080907085601A</guid></item><item><title>Closed Issue: Field boosting (on FieldAttribute)</title><link>http://www.codeplex.com/linqtolucene/WorkItem/View.aspx?WorkItemId=5801</link><description>This code might already be there, but a unit test should be added&lt;br /&gt;Comments: The codes in there, unit testing is a bit of a pest</description><author>CVertex</author><pubDate>Mon, 25 Aug 2008 12:07:46 GMT</pubDate><guid isPermaLink="false">Closed Issue: Field boosting (on FieldAttribute) 20080825120746P</guid></item><item><title>New Post: Multiple field searches</title><link>http://www.codeplex.com/linqtolucene/Thread/View.aspx?ThreadId=33917</link><description>&lt;div style="line-height: normal;"&gt;Just added &lt;a href="http://www.codeplex.com/linqtolucene/WorkItem/View.aspx?WorkItemId=5801"&gt;this issue&lt;/a&gt;&lt;br&gt;
&lt;/div&gt;</description><author>CVertex</author><pubDate>Thu, 21 Aug 2008 05:42:01 GMT</pubDate><guid isPermaLink="false">New Post: Multiple field searches 20080821054201A</guid></item><item><title>Created Issue: Field boosting (on FieldAttribute)</title><link>http://www.codeplex.com/linqtolucene/WorkItem/View.aspx?WorkItemId=5801</link><description>This code might already be there, but a unit test should be added&lt;br /&gt;</description><author>CVertex</author><pubDate>Thu, 21 Aug 2008 05:40:59 GMT</pubDate><guid isPermaLink="false">Created Issue: Field boosting (on FieldAttribute) 20080821054059A</guid></item><item><title>New Post: Multiple field searches</title><link>http://www.codeplex.com/linqtolucene/Thread/View.aspx?ThreadId=33917</link><description>&lt;div style="line-height: normal;"&gt;Boosting fields happens at Index time. This will naturally give certain fields higher importance over others.&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
FieldAttribute should have a boost property on it, which is settable on the property itself.&lt;br&gt;
&lt;br&gt;
[Field(Type=Blah, Boost = 3.0f)]&lt;br&gt;
object MyField {get;set;}&lt;br&gt;
&lt;br&gt;
I remember putting the stub in, and vaguely remember adjusting the indexer to use the supplied boosts. What I definitely did not do is add a Unit test, which should be something to do.&lt;br&gt;
&lt;br&gt;
Try this out Paul, if the Boost property isn't there, please add a issue in the tracker and I'll add it later. You're also free to submit a patch.&lt;br&gt;
&lt;br&gt;
-V&lt;br&gt;
&lt;/div&gt;</description><author>CVertex</author><pubDate>Thu, 21 Aug 2008 05:40:15 GMT</pubDate><guid isPermaLink="false">New Post: Multiple field searches 20080821054015A</guid></item><item><title>New Post: Multiple field searches</title><link>http://www.codeplex.com/linqtolucene/Thread/View.aspx?ThreadId=33917</link><description>&lt;div style="line-height: normal;"&gt;&lt;p&gt;Ok, this was me being an idiot.&amp;nbsp; Seems that I didn't put in metadata mapping info for the Address field, which is what was throwing the error.&amp;nbsp; my mistake, sorry to bother you all.&amp;nbsp; :D&amp;nbsp; &lt;/p&gt;
&lt;p&gt;I'd still like to udnerstand how ranking works in these situations, though.&amp;nbsp; Basically, i'd like to be able to do a Boost on a class of terms, rather than on individual terms.&amp;nbsp; e.g. boost a field's weight, vice boosting a term's weight, if I'm clear.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;thanks,&lt;/p&gt;
&lt;p&gt;Paul&lt;/p&gt;
&lt;/div&gt;</description><author>pvencill</author><pubDate>Wed, 20 Aug 2008 16:05:02 GMT</pubDate><guid isPermaLink="false">New Post: Multiple field searches 20080820040502P</guid></item><item><title>New Post: Multiple field searches</title><link>http://www.codeplex.com/linqtolucene/Thread/View.aspx?ThreadId=33917</link><description>&lt;div style="line-height: normal;"&gt;This might be my misunderstanding of the docs, but I'm having trouble getting a multiple field query to work.&amp;nbsp; I'm also curious&amp;nbsp;how to rank the results, if I wanted one field to count for more than the other in an intermixed fashion (e.g. tiebreaker kind of boost).&lt;br&gt;
&lt;br&gt;
The query I attempted was based on one of the examples (I thought), and looked like so:&lt;br&gt;
&lt;span style="font-size:13px;color:#0000ff"&gt;&lt;span style="font-size:13px;color:#0000ff"&gt;
&lt;p&gt;var&lt;/p&gt;
&lt;/span&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;/span&gt;
&lt;p&gt;&lt;span style="font-size:13px"&gt; mmCustomers = dbi.Get&amp;lt;&lt;/span&gt;&lt;span style="font-size:13px;color:#2b91af"&gt;&lt;span style="font-size:13px;color:#2b91af"&gt;Customer&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:13px"&gt;&amp;gt;().Where(c =&amp;gt; (c.ContactTitle.Match(&lt;/span&gt;&lt;span style="font-size:13px;color:#0000ff"&gt;&lt;span style="font-size:13px;color:#0000ff"&gt;new&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:13px"&gt; &lt;/span&gt;&lt;span style="font-size:13px;color:#0000ff"&gt;&lt;span style="font-size:13px;color:#0000ff"&gt;string&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:13px"&gt;[]{&lt;/span&gt;&lt;span style="font-size:13px;color:#a31515"&gt;&lt;span style="font-size:13px;color:#a31515"&gt;&amp;quot;marketing&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:13px"&gt;,&lt;/span&gt;&lt;span style="font-size:13px;color:#a31515"&gt;&lt;span style="font-size:13px;color:#a31515"&gt;&amp;quot;manager&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:13px"&gt;})) || (c.Address.Match(&lt;/span&gt;&lt;span style="font-size:13px;color:#0000ff"&gt;&lt;span style="font-size:13px;color:#0000ff"&gt;new&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:13px"&gt; &lt;/span&gt;&lt;span style="font-size:13px;color:#0000ff"&gt;&lt;span style="font-size:13px;color:#0000ff"&gt;string&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:13px"&gt;[]{&lt;/span&gt;&lt;span style="font-size:13px;color:#a31515"&gt;&lt;span style="font-size:13px;color:#a31515"&gt;&amp;quot;rue&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:13px"&gt;})));
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;/span&gt;&lt;/p&gt;
where dbi is an instance of my DatabaseIndexSet&amp;lt;NorthwindDataContext&amp;gt; (for learning off of).&amp;nbsp; the first part of the query works fine by itself, the exception started when I added in the OR logic (||) to try and bring in the other field.&amp;nbsp; &lt;br&gt;
&lt;br&gt;
any thoughts?&lt;br&gt;
&lt;br&gt;
the exception I got was:&lt;br&gt;
Lucene.Net.QueryParsers.ParseException was unhandled&lt;br&gt;
&amp;nbsp; Message=&amp;quot;Encountered \&amp;quot;:\&amp;quot; at line 1, column 59.\nWas expecting one of:\n&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;AND&amp;gt; ...\n&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;OR&amp;gt; ...\n&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;NOT&amp;gt; ...\n&amp;nbsp;&amp;nbsp;&amp;nbsp; \&amp;quot;+\&amp;quot; ...\n&amp;nbsp;&amp;nbsp;&amp;nbsp; \&amp;quot;-\&amp;quot; ...\n&amp;nbsp;&amp;nbsp;&amp;nbsp; \&amp;quot;(\&amp;quot; ...\n&amp;nbsp;&amp;nbsp;&amp;nbsp; \&amp;quot;)\&amp;quot; ...\n&amp;nbsp;&amp;nbsp;&amp;nbsp; \&amp;quot;^\&amp;quot; ...\n&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;QUOTED&amp;gt; ...\n&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;TERM&amp;gt; ...\n&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;FUZZY_SLOP&amp;gt; ...\n&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;PREFIXTERM&amp;gt; ...\n&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;WILDTERM&amp;gt; ...\n&amp;nbsp;&amp;nbsp;&amp;nbsp; \&amp;quot;[\&amp;quot; ...\n&amp;nbsp;&amp;nbsp;&amp;nbsp; \&amp;quot;{\&amp;quot; ...\n&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;NUMBER&amp;gt; ...\n&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;quot;&lt;br&gt;
&amp;nbsp; Source=&amp;quot;Lucene.Net&amp;quot;&lt;br&gt;
&amp;nbsp; StackTrace:&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at Lucene.Net.QueryParsers.QueryParser.Jj_consume_token(Int32 kind) in C:\downloads\lucene\Lucene.Net\QueryParser\QueryParser.cs:line 1412&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at Lucene.Net.QueryParsers.QueryParser.Clause(String field) in C:\downloads\lucene\Lucene.Net\QueryParser\QueryParser.cs:line 884&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at Lucene.Net.QueryParsers.QueryParser.Query(String field) in C:\downloads\lucene\Lucene.Net\QueryParser\QueryParser.cs:line 801&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at Lucene.Net.QueryParsers.QueryParser.Parse(String query) in C:\downloads\lucene\Lucene.Net\QueryParser\QueryParser.cs:line 154&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at Lucene.Linq.Expressions.ParsingQueryTranslator.Translate(String query, String[] defaultFieldNames) in C:\downloads\lucene\Lucene.Linq\Expressions\ParsingQueryTranslator.cs:line 73&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at Lucene.Linq.Expressions.ParsingQueryTranslator.Translate(Expression expression) in C:\downloads\lucene\Lucene.Linq\Expressions\ParsingQueryTranslator.cs:line 51&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at Lucene.Linq.Expressions.QueryProvider.Translate(Expression expression) in C:\downloads\lucene\Lucene.Linq\Expressions\QueryProvider.cs:line 193&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at Lucene.Linq.Expressions.QueryProvider.Execute(Expression expression) in C:\downloads\lucene\Lucene.Linq\Expressions\QueryProvider.cs:line 67&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at Lucene.Linq.Expressions.QueryProvider.System.Linq.IQueryProvider.Execute[S](Expression expression) in C:\downloads\lucene\Lucene.Linq\Expressions\QueryProvider.cs:line 58&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at System.Linq.Queryable.Count[TSource](IQueryable`1 source)&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at First_Lucene.Program.Main(String[] args) in C:\Documents and Settings\pvencill\My Documents\Visual Studio 2008\Projects\First Lucene\First Lucene\Program.cs:line 23&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at System.AppDomain._nExecuteAssembly(Assembly assembly, String[] args)&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at System.Threading.ThreadHelper.ThreadStart_Context(Object state)&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at System.Threading.ThreadHelper.ThreadStart()&lt;br&gt;
&amp;nbsp; InnerException: &lt;br&gt;
&lt;/div&gt;</description><author>pvencill</author><pubDate>Wed, 20 Aug 2008 15:24:00 GMT</pubDate><guid isPermaLink="false">New Post: Multiple field searches 20080820032400P</guid></item><item><title>New Post: Multiple field searches</title><link>http://www.codeplex.com/linqtolucene/Thread/View.aspx?ThreadId=33916</link><description>&lt;div style="line-height: normal;"&gt;This might be my misunderstanding of the docs, but I'm having trouble getting a multiple field query to work.&amp;nbsp; I'm also curious&amp;nbsp;how to rank the results, if I wanted one field to count for more than the other in an intermixed fashion (e.g. tiebreaker kind of boost).&lt;br&gt;
&lt;br&gt;
The query I attempted was based on one of the examples (I thought), and looked like so:&lt;br&gt;
&lt;span style="font-size:13px;color:#0000ff"&gt;&lt;span style="font-size:13px;color:#0000ff"&gt;
&lt;p&gt;var&lt;/p&gt;
&lt;/span&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;/span&gt;
&lt;p&gt;&lt;span style="font-size:13px"&gt; mmCustomers = dbi.Get&amp;lt;&lt;/span&gt;&lt;span style="font-size:13px;color:#2b91af"&gt;&lt;span style="font-size:13px;color:#2b91af"&gt;Customer&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:13px"&gt;&amp;gt;().Where(c =&amp;gt; (c.ContactTitle.Match(&lt;/span&gt;&lt;span style="font-size:13px;color:#0000ff"&gt;&lt;span style="font-size:13px;color:#0000ff"&gt;new&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:13px"&gt; &lt;/span&gt;&lt;span style="font-size:13px;color:#0000ff"&gt;&lt;span style="font-size:13px;color:#0000ff"&gt;string&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:13px"&gt;[]{&lt;/span&gt;&lt;span style="font-size:13px;color:#a31515"&gt;&lt;span style="font-size:13px;color:#a31515"&gt;&amp;quot;marketing&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:13px"&gt;,&lt;/span&gt;&lt;span style="font-size:13px;color:#a31515"&gt;&lt;span style="font-size:13px;color:#a31515"&gt;&amp;quot;manager&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:13px"&gt;})) || (c.Address.Match(&lt;/span&gt;&lt;span style="font-size:13px;color:#0000ff"&gt;&lt;span style="font-size:13px;color:#0000ff"&gt;new&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:13px"&gt; &lt;/span&gt;&lt;span style="font-size:13px;color:#0000ff"&gt;&lt;span style="font-size:13px;color:#0000ff"&gt;string&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:13px"&gt;[]{&lt;/span&gt;&lt;span style="font-size:13px;color:#a31515"&gt;&lt;span style="font-size:13px;color:#a31515"&gt;&amp;quot;rue&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:13px"&gt;})));
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;/span&gt;&lt;/p&gt;
where dbi is an instance of my DatabaseIndexSet&amp;lt;NorthwindDataContext&amp;gt; (for learning off of).&amp;nbsp; the first part of the query works fine by itself, the exception started when I added in the OR logic (||) to try and bring in the other field.&amp;nbsp; &lt;br&gt;
&lt;br&gt;
any thoughts?&lt;br&gt;
&lt;br&gt;
the exception I got was:&lt;br&gt;
Lucene.Net.QueryParsers.ParseException was unhandled&lt;br&gt;
&amp;nbsp; Message=&amp;quot;Encountered \&amp;quot;:\&amp;quot; at line 1, column 59.\nWas expecting one of:\n&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;AND&amp;gt; ...\n&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;OR&amp;gt; ...\n&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;NOT&amp;gt; ...\n&amp;nbsp;&amp;nbsp;&amp;nbsp; \&amp;quot;+\&amp;quot; ...\n&amp;nbsp;&amp;nbsp;&amp;nbsp; \&amp;quot;-\&amp;quot; ...\n&amp;nbsp;&amp;nbsp;&amp;nbsp; \&amp;quot;(\&amp;quot; ...\n&amp;nbsp;&amp;nbsp;&amp;nbsp; \&amp;quot;)\&amp;quot; ...\n&amp;nbsp;&amp;nbsp;&amp;nbsp; \&amp;quot;^\&amp;quot; ...\n&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;QUOTED&amp;gt; ...\n&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;TERM&amp;gt; ...\n&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;FUZZY_SLOP&amp;gt; ...\n&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;PREFIXTERM&amp;gt; ...\n&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;WILDTERM&amp;gt; ...\n&amp;nbsp;&amp;nbsp;&amp;nbsp; \&amp;quot;[\&amp;quot; ...\n&amp;nbsp;&amp;nbsp;&amp;nbsp; \&amp;quot;{\&amp;quot; ...\n&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;NUMBER&amp;gt; ...\n&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;quot;&lt;br&gt;
&amp;nbsp; Source=&amp;quot;Lucene.Net&amp;quot;&lt;br&gt;
&amp;nbsp; StackTrace:&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at Lucene.Net.QueryParsers.QueryParser.Jj_consume_token(Int32 kind) in C:\downloads\lucene\Lucene.Net\QueryParser\QueryParser.cs:line 1412&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at Lucene.Net.QueryParsers.QueryParser.Clause(String field) in C:\downloads\lucene\Lucene.Net\QueryParser\QueryParser.cs:line 884&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at Lucene.Net.QueryParsers.QueryParser.Query(String field) in C:\downloads\lucene\Lucene.Net\QueryParser\QueryParser.cs:line 801&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at Lucene.Net.QueryParsers.QueryParser.Parse(String query) in C:\downloads\lucene\Lucene.Net\QueryParser\QueryParser.cs:line 154&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at Lucene.Linq.Expressions.ParsingQueryTranslator.Translate(String query, String[] defaultFieldNames) in C:\downloads\lucene\Lucene.Linq\Expressions\ParsingQueryTranslator.cs:line 73&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at Lucene.Linq.Expressions.ParsingQueryTranslator.Translate(Expression expression) in C:\downloads\lucene\Lucene.Linq\Expressions\ParsingQueryTranslator.cs:line 51&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at Lucene.Linq.Expressions.QueryProvider.Translate(Expression expression) in C:\downloads\lucene\Lucene.Linq\Expressions\QueryProvider.cs:line 193&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at Lucene.Linq.Expressions.QueryProvider.Execute(Expression expression) in C:\downloads\lucene\Lucene.Linq\Expressions\QueryProvider.cs:line 67&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at Lucene.Linq.Expressions.QueryProvider.System.Linq.IQueryProvider.Execute[S](Expression expression) in C:\downloads\lucene\Lucene.Linq\Expressions\QueryProvider.cs:line 58&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at System.Linq.Queryable.Count[TSource](IQueryable`1 source)&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at First_Lucene.Program.Main(String[] args) in C:\Documents and Settings\pvencill\My Documents\Visual Studio 2008\Projects\First Lucene\First Lucene\Program.cs:line 23&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at System.AppDomain._nExecuteAssembly(Assembly assembly, String[] args)&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at System.Threading.ThreadHelper.ThreadStart_Context(Object state)&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at System.Threading.ThreadHelper.ThreadStart()&lt;br&gt;
&amp;nbsp; InnerException: &lt;br&gt;
&lt;/div&gt;</description><author>pvencill</author><pubDate>Wed, 20 Aug 2008 15:23:59 GMT</pubDate><guid isPermaLink="false">New Post: Multiple field searches 20080820032359P</guid></item><item><title>New Post: DataContext lifespan</title><link>http://www.codeplex.com/linqtolucene/Thread/View.aspx?ThreadId=33663</link><description>&lt;div style="line-height: normal;"&gt;Vijay and I were having this discussion on email, moving it here:&lt;br&gt;
&lt;br&gt;
&lt;p&gt;&amp;gt; &amp;lt;&amp;lt;&amp;lt; re: MS team's recommendation on DataContexts &amp;gt;&amp;gt;&amp;gt;&lt;br&gt;
&amp;gt;&amp;gt; Good point. I'm still not sure the right thing to do with db data&lt;br&gt;
&amp;gt;&amp;gt; contexts. If you have an official MS guy statement saying that should&lt;br&gt;
&amp;gt;&amp;gt; be done. Without much effort, we could hide recycle/refresh the data&lt;br&gt;
&amp;gt;&amp;gt; context instance inside the DatabaseIndexSet&amp;lt;T&amp;gt;, rather than making&lt;br&gt;
&amp;gt;&amp;gt; the DataContext settable. What do you think we should do?&lt;br&gt;
&amp;gt;&lt;br&gt;
&amp;gt; The recommendation I'm talking about was in the MS Press book&lt;br&gt;
&amp;gt; Programming Microsoft LINQ; it may be online as well, I haven't looked&lt;br&gt;
&amp;gt; for it.&amp;nbsp; I would think that having the DatabaseIndexSet recycle its&lt;br&gt;
&amp;gt; DataContext is a fine idea; I was thinking about it after I wrote the&lt;br&gt;
&amp;gt; question, though, and I can't help but wonder if it wouldn't be a&lt;br&gt;
&amp;gt; tradeoff between the object tracking overhead that the MS guys were&lt;br&gt;
&amp;gt; warning against and the overhead of reflection to create new&lt;br&gt;
&amp;gt; datacontexts by type.&amp;nbsp; Unless you were thinking of a different way to&lt;br&gt;
&amp;gt; recycle the DataContext that I'm not thinking of...&lt;/p&gt;
&lt;p&gt;Hmmm, I still have no idea what to do with DataContext instances - how&lt;br&gt;
long they should live and when i should kill them.&lt;br&gt;
The &amp;quot;Unit of work&amp;quot; rule idea seems to be a good one, except not sure&lt;br&gt;
how large units of work can be.&lt;br&gt;
I'm eager to leave the DataContext instance as a singleton (i.e. one&lt;br&gt;
always open instance) and wait until you come across an error during&lt;br&gt;
periodic updates - just as an experiment to see what goes wrong.&lt;/p&gt;
I also found this online discussion of why it's best to keep the DataContext as a UoW, and it seems that the main reason has to do w/ avoiding concurrency conflicts:&lt;br&gt;
&lt;br&gt;
&lt;a href="http://blogs.msdn.com/dinesh.kulkarni/archive/2008/04/27/lifetime-of-a-linq-to-sql-datacontext.aspx"&gt;http://blogs.msdn.com/dinesh.kulkarni/archive/2008/04/27/lifetime-of-a-linq-to-sql-datacontext.aspx&lt;/a&gt;&lt;br&gt;
&lt;br&gt;
I wonder if it wouldn't be better to offer a choice.&amp;nbsp; If you used an untyped datacontext internally, I think you could take the connection (or connectionstring) of the database and then create and destroy the datacontext on each use, I would think.&amp;nbsp;The developer wouldn't even have to cast on a query, since you coudl still use GetTable&amp;lt;T&amp;gt; under the hood.&amp;nbsp; &lt;br&gt;
&lt;br&gt;
Thoughts?
&lt;/div&gt;</description><author>pvencill</author><pubDate>Sat, 16 Aug 2008 21:39:47 GMT</pubDate><guid isPermaLink="false">New Post: DataContext lifespan 20080816093947P</guid></item><item><title>Updated Wiki: Project Roadmap</title><link>http://www.codeplex.com/linqtolucene/Wiki/View.aspx?title=Project Roadmap&amp;version=2</link><description>&lt;div class="wikidoc"&gt;
&lt;h1&gt;
Project Roadmap
&lt;/h1&gt; &lt;br /&gt;This is a list of desired features the contributors would like to add in the future to this library. &lt;br /&gt;If there's anything we're missing please let us know in the issue tracker or in the discussion forum.&lt;br /&gt; &lt;br /&gt;&lt;ol&gt;
&lt;li&gt;LINQ Methods: Any, All&lt;/li&gt;&lt;li&gt;Aggregation&lt;/li&gt;&lt;li&gt;Filters&lt;/li&gt;&lt;li&gt;Performance Optimizations&lt;/li&gt;
&lt;/ol&gt;&lt;ul&gt;
&lt;ul&gt;
&lt;li&gt;Compiled Queries&lt;/li&gt;&lt;li&gt;Single expression tree traversal&lt;/li&gt;&lt;li&gt;Configurable batch indexing support using RAMDirectories&lt;/li&gt;
&lt;/ul&gt;
&lt;/ul&gt;&lt;ol&gt;
&lt;li&gt;OrderBy operation&lt;/li&gt;&lt;li&gt;Nested Queries &amp;amp; Joins&lt;/li&gt;&lt;li&gt;Change Tracking&lt;/li&gt;&lt;li&gt;Automatic synchronization with LINQ to SQL Data Context&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;</description><author>CVertex</author><pubDate>Tue, 22 Jul 2008 13:02:25 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Project Roadmap 20080722010225P</guid></item><item><title>Updated Wiki: Project Roadmap</title><link>http://www.codeplex.com/linqtolucene/Wiki/View.aspx?title=Project Roadmap&amp;version=1</link><description>&lt;div class="wikidoc"&gt;
&lt;h1&gt;
Project Roadmap
&lt;/h1&gt; &lt;br /&gt;This is a list of desired features the contributors would like to add in the future to this library. &lt;br /&gt;If there's anything we're missing please let us know in the issue tracker or in the discussion forum.&lt;br /&gt; &lt;br /&gt;&lt;ol&gt;
&lt;li&gt;LINQ Methods: Any, All&lt;/li&gt;&lt;li&gt;Aggregation&lt;/li&gt;&lt;li&gt;Filters&lt;/li&gt;&lt;li&gt;Performance Optimizations&lt;/li&gt;&lt;ol&gt;
&lt;li&gt;Compiled Queries&lt;/li&gt;&lt;li&gt;Single expression tree traversal&lt;/li&gt;&lt;li&gt;Configurable batch indexing support using RAMDirectories&lt;/li&gt;
&lt;/ol&gt;&lt;li&gt;OrderBy operation&lt;/li&gt;&lt;li&gt;Nested Queries &amp;amp; Joins&lt;/li&gt;&lt;li&gt;Change Tracking&lt;/li&gt;&lt;li&gt;Automatic synchronization with LINQ to SQL Data Context&lt;/li&gt;
&lt;/ol&gt; &lt;br /&gt;
&lt;/div&gt;</description><author>CVertex</author><pubDate>Tue, 22 Jul 2008 12:58:19 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Project Roadmap 20080722125819P</guid></item><item><title>Updated Wiki: Home</title><link>http://www.codeplex.com/linqtolucene/Wiki/View.aspx?title=Home&amp;version=88</link><description>&lt;div class="wikidoc"&gt;
&lt;h1&gt;
What is LINQ to Lucene?
&lt;/h1&gt;Providing a custom LINQ solution for the Lucene Information Retrieval System, commonly referred to as a search-engine.  
&lt;br /&gt; &lt;br /&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.codeplex.com/linqtolucene/Wiki/View.aspx?title=Project%20Description&amp;amp;referringTitle=Home"&gt;Project Description&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.codeplex.com/linqtolucene/Wiki/View.aspx?title=Project%20Architecture&amp;amp;referringTitle=Home"&gt;Project Architecture&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.codeplex.com/linqtolucene/Wiki/View.aspx?title=Project%20Documentation&amp;amp;referringTitle=Home"&gt;Project Documentation&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.codeplex.com/linqtolucene/Wiki/View.aspx?title=Project%20Roadmap&amp;amp;referringTitle=Home"&gt;Project Roadmap&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt; &lt;br /&gt;&lt;b&gt;Current Release&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;a href="http://www.codeplex.com/linqtolucene/Release/ProjectReleases.aspx?ReleaseId=15539" class="externalLink"&gt;The Refactored Release&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/b&gt;&lt;br /&gt;Tuesday, 22nd July 2008&lt;br /&gt;A large set of library changes including an API analogous to LINQ to SQL, more supported LINQ methods, powerful LINQ to SQL Data Context support and more unit tests.&lt;br /&gt; &lt;br /&gt; &lt;br /&gt;&lt;b&gt;Older Release&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;a href="http://www.codeplex.com/linqtolucene/Release/ProjectReleases.aspx?ReleaseId=12946" class="externalLink"&gt;The Re-Release&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/b&gt;&lt;br /&gt;As promised, this release merges the features of previous releases into the one bundle.&lt;br /&gt; &lt;br /&gt; &lt;br /&gt;&lt;b&gt;Older Release&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;a href="https://www.codeplex.com/Release/ProjectReleases.aspx?ProjectName=linqtolucene&amp;amp;ReleaseId=8512" class="externalLink"&gt;The Type-Conversion Release&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/b&gt;&lt;br /&gt;Monday, 19 November 2007&lt;br /&gt;TYPES BEYOND STRINGS NOW SUPPORTED&lt;br /&gt;As promised (albeit out of order), support has been added for type-conversion.  If the type of the indexed-property uses a type-converter that supports conversion from a string, the type will automatically convert to its appropriate type. This automatically inlcudes string, bool, int, datetime and a number of other .net types that already implement their own type-converters.  Custom types can implement their own type-converters.  For more information on type-converters please review either of the following article: &lt;a href="http://msdn2.microsoft.com/en-us/library/ayybcxe5.aspx" class="externalLink"&gt;MSDN: How to Implement a Type-Converter&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;br /&gt; &lt;br /&gt;&lt;b&gt;Older Release&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;a href="https://www.codeplex.com/Release/ProjectReleases.aspx?ProjectName=linqtolucene&amp;amp;ReleaseId=8358" class="externalLink"&gt;The Query Release&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/b&gt;&lt;br /&gt;Tuesday, 13 November 2007&lt;br /&gt;This release provides a real focus on the querying abilities of the &lt;i&gt;LINQ to Lucene&lt;/i&gt; project and is the first real 'working release', converting LINQ statements to Lucene queries with deferred query execution and object creation or projection. It culminates the majority of the required querying features for LINQ that Lucene provides natively. &lt;br /&gt; &lt;br /&gt;&lt;table&gt;
&lt;tr&gt;
&lt;th&gt; &lt;/th&gt;&lt;th&gt;Lucene Syntax&lt;/th&gt;&lt;th&gt;LINQ to Lucene&lt;/th&gt;
&lt;/tr&gt;&lt;tr&gt;
&lt;td&gt;Terms &amp;amp; Phrases&lt;/td&gt;&lt;td&gt;&lt;span class="codeInline"&gt;&amp;quot;test&amp;quot;&lt;/span&gt; or &lt;span class="codeInline"&gt;&amp;quot;hello dolly&amp;quot;&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span class="codeInline"&gt;c.Match(&amp;quot;test&amp;quot;)&lt;/span&gt; or &lt;span class="codeInline"&gt;c.Match(&amp;quot;hello dolly&amp;quot;)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;&lt;tr&gt;
&lt;td&gt;Fields&lt;/td&gt;&lt;td&gt;&lt;span class="codeInline"&gt;title:&amp;quot;The Right way&amp;quot;&lt;/span&gt; and &lt;span class="codeInline"&gt;text:go&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span class="codeInline"&gt;c.Title == &amp;quot;The Right way&amp;quot;&lt;/span&gt; or &lt;span class="codeInline"&gt;c.Text == &amp;quot;go&amp;quot;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;&lt;tr&gt;
&lt;td&gt;WildCard&lt;/td&gt;&lt;td&gt;&lt;span class="codeInline"&gt;amb?r&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span class="codeInline"&gt;c.ContactName.Match(&amp;quot;amb?r&amp;quot;)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;&lt;tr&gt;
&lt;td&gt;Prefix&lt;/td&gt;&lt;td&gt;&lt;span class="codeInline"&gt;amber*&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span class="codeInline"&gt;c.ContactName.StartsWith(&amp;quot;amber&amp;quot;)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;&lt;tr&gt;
&lt;td&gt;Fuzzy&lt;/td&gt;&lt;td&gt;&lt;span class="codeInline"&gt;roam~&lt;/span&gt; or &lt;span class="codeInline"&gt;roam~0.8&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span class="codeInline"&gt;c.ContactName.Like(&amp;quot;roam&amp;quot;)&lt;/span&gt; or &lt;span class="codeInline"&gt;c.ContactName.Like(&amp;quot;roam&amp;quot;, 0.8)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;&lt;tr&gt;
&lt;td&gt;Proximity&lt;/td&gt;&lt;td&gt;&lt;span class="codeInline"&gt;&amp;quot;jakarta apache&amp;quot;~10&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span class="codeInline"&gt;c.ContactName.Like(&amp;quot;jakarta apache&amp;quot;, 10)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;&lt;tr&gt;
&lt;td&gt;Inclusive Range&lt;/td&gt;&lt;td&gt;&lt;span class="codeInline"&gt;mod_date:[20020101 TO 20030101]&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span class="codeInline"&gt;c.ModifiedDate.Includes(&amp;quot;20020101&amp;quot;, &amp;quot;20030101&amp;quot;)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;&lt;tr&gt;
&lt;td&gt;Exclusive Range&lt;/td&gt;&lt;td&gt;&lt;span class="codeInline"&gt;title:{Aida TO Carmen&lt;/span&gt;}&lt;/td&gt;&lt;td&gt;&lt;span class="codeInline"&gt;c.Title.Between(&amp;quot;Aida&amp;quot;, &amp;quot;Carmen&amp;quot;)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;&lt;tr&gt;
&lt;td&gt;Boosting&lt;/td&gt;&lt;td&gt;&lt;span class="codeInline"&gt;jakarta^4 apache&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span class="codeInline"&gt;c.Title.Match(&amp;quot;jakarta&amp;quot;.Boost(4), apache)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;&lt;tr&gt;
&lt;td&gt;Boolean Or&lt;/td&gt;&lt;td&gt;&lt;span class="codeInline"&gt;&amp;quot;jakarta apache&amp;quot; OR jakarta&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span class="codeInline"&gt;where c.Match(&amp;quot;jakarta apache&amp;quot;) || c.Match(&amp;quot;jakarta&amp;quot;)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;&lt;tr&gt;
&lt;td&gt;Boolean And&lt;/td&gt;&lt;td&gt;&lt;span class="codeInline"&gt;&amp;quot;jakarta apache&amp;quot; AND &amp;quot;Apache Lucene&amp;quot;&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span class="codeInline"&gt;where c.Match(&amp;quot;jakarta apache&amp;quot;) &amp;amp;&amp;amp; c.Match(&amp;quot;Apache Lucene&amp;quot;)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;&lt;tr&gt;
&lt;td&gt;Boolean Not&lt;/td&gt;&lt;td&gt;&lt;span class="codeInline"&gt;&amp;quot;jakarta apache&amp;quot; NOT &amp;quot;Apache Lucene&amp;quot;&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span class="codeInline"&gt;where c.Match(&amp;quot;jakarta apache&amp;quot;) &amp;amp;&amp;amp; !c.Match(&amp;quot;Apache Lucene&amp;quot;)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;&lt;tr&gt;
&lt;td&gt;Required&lt;/td&gt;&lt;td&gt;&lt;span class="codeInline"&gt;+jakarta lucene&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span class="codeInline"&gt;c.Title.Match(&amp;quot;jakarta&amp;quot;.Require(), &amp;quot;lucene&amp;quot;)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;&lt;tr&gt;
&lt;td&gt;Grouping&lt;/td&gt;&lt;td&gt;&lt;span class="codeInline"&gt;(jakarta OR apache) AND website&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span class="codeInline"&gt;where (c.Title == &amp;quot;jakarta&amp;quot; || c.Title == &amp;quot;apache&amp;quot;) &amp;amp;&amp;amp; (c.Title == &amp;quot;website&amp;quot;)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;&lt;tr&gt;
&lt;td&gt;Native Syntax&lt;/td&gt;&lt;td&gt;ie. &lt;span class="codeInline"&gt;title:{+return +&amp;quot;pink panther&amp;quot;)&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span class="codeInline"&gt;c.Search(&amp;quot;title:(return +\&amp;quot;pink panther\&amp;quot;&amp;quot;)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt; &lt;br /&gt; &lt;br /&gt;&lt;b&gt;First Releases&lt;/b&gt;&lt;br /&gt;A first release for generating a simple index out of a database for mapping types to Lucene using LINQ is now available.  &lt;br /&gt;This is the first small piece of the puzzle.  &lt;br /&gt; &lt;br /&gt;&lt;a href="https://www.codeplex.com/Release/ProjectReleases.aspx?ProjectName=linqtolucene&amp;amp;ReleaseId=8017" class="externalLink"&gt;The Index Release&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;pre&gt;
[Document]
public class Customer 
{
  [Field(Store=FieldStore.Yes, Index=FieldIndex.No)] public string CustomerID { get; set; }
  [Field(Store=FieldStore.Yes, Index=FieldIndex.Tokenized)] public string CustomerName { get; set; }
}
 
IndexContext index = new IndexContext;
index.WriteIndex&amp;lt;Customer&amp;gt;();
&lt;/pre&gt; &lt;br /&gt;
&lt;/div&gt;</description><author>CVertex</author><pubDate>Tue, 22 Jul 2008 12:52:53 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Home 20080722125253P</guid></item><item><title>Updated Wiki: Home</title><link>http://www.codeplex.com/linqtolucene/Wiki/View.aspx?title=Home&amp;version=87</link><description>&lt;div class="wikidoc"&gt;
&lt;h1&gt;
What is LINQ to Lucene?
&lt;/h1&gt;Providing a custom LINQ solution for the Lucene Information Retrieval System, commonly referred to as a search-engine.  
&lt;br /&gt; &lt;br /&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.codeplex.com/linqtolucene/Wiki/View.aspx?title=Project%20Description&amp;amp;referringTitle=Home"&gt;Project Description&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.codeplex.com/linqtolucene/Wiki/View.aspx?title=Project%20Architecture&amp;amp;referringTitle=Home"&gt;Project Architecture&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.codeplex.com/linqtolucene/Wiki/View.aspx?title=Project%20Documentation&amp;amp;referringTitle=Home"&gt;Project Documentation&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt; &lt;br /&gt;&lt;b&gt;Current Release&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;a href="http://www.codeplex.com/linqtolucene/Release/ProjectReleases.aspx?ReleaseId=15539" class="externalLink"&gt;The Refactored Release&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/b&gt;&lt;br /&gt;Tuesday, 22nd July 2008&lt;br /&gt;A large set of library changes including an API analogous to LINQ to SQL, more supported LINQ methods, powerful LINQ to SQL Data Context support and more unit tests.&lt;br /&gt; &lt;br /&gt; &lt;br /&gt;&lt;b&gt;Older Release&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;a href="http://www.codeplex.com/linqtolucene/Release/ProjectReleases.aspx?ReleaseId=12946" class="externalLink"&gt;The Re-Release&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/b&gt;&lt;br /&gt;As promised, this release merges the features of previous releases into the one bundle.&lt;br /&gt; &lt;br /&gt; &lt;br /&gt;&lt;b&gt;Older Release&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;a href="https://www.codeplex.com/Release/ProjectReleases.aspx?ProjectName=linqtolucene&amp;amp;ReleaseId=8512" class="externalLink"&gt;The Type-Conversion Release&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/b&gt;&lt;br /&gt;Monday, 19 November 2007&lt;br /&gt;TYPES BEYOND STRINGS NOW SUPPORTED&lt;br /&gt;As promised (albeit out of order), support has been added for type-conversion.  If the type of the indexed-property uses a type-converter that supports conversion from a string, the type will automatically convert to its appropriate type. This automatically inlcudes string, bool, int, datetime and a number of other .net types that already implement their own type-converters.  Custom types can implement their own type-converters.  For more information on type-converters please review either of the following article: &lt;a href="http://msdn2.microsoft.com/en-us/library/ayybcxe5.aspx" class="externalLink"&gt;MSDN: How to Implement a Type-Converter&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;br /&gt; &lt;br /&gt;&lt;b&gt;Older Release&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;a href="https://www.codeplex.com/Release/ProjectReleases.aspx?ProjectName=linqtolucene&amp;amp;ReleaseId=8358" class="externalLink"&gt;The Query Release&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/b&gt;&lt;br /&gt;Tuesday, 13 November 2007&lt;br /&gt;This release provides a real focus on the querying abilities of the &lt;i&gt;LINQ to Lucene&lt;/i&gt; project and is the first real 'working release', converting LINQ statements to Lucene queries with deferred query execution and object creation or projection. It culminates the majority of the required querying features for LINQ that Lucene provides natively. &lt;br /&gt; &lt;br /&gt;&lt;table&gt;
&lt;tr&gt;
&lt;th&gt; &lt;/th&gt;&lt;th&gt;Lucene Syntax&lt;/th&gt;&lt;th&gt;LINQ to Lucene&lt;/th&gt;
&lt;/tr&gt;&lt;tr&gt;
&lt;td&gt;Terms &amp;amp; Phrases&lt;/td&gt;&lt;td&gt;&lt;span class="codeInline"&gt;&amp;quot;test&amp;quot;&lt;/span&gt; or &lt;span class="codeInline"&gt;&amp;quot;hello dolly&amp;quot;&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span class="codeInline"&gt;c.Match(&amp;quot;test&amp;quot;)&lt;/span&gt; or &lt;span class="codeInline"&gt;c.Match(&amp;quot;hello dolly&amp;quot;)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;&lt;tr&gt;
&lt;td&gt;Fields&lt;/td&gt;&lt;td&gt;&lt;span class="codeInline"&gt;title:&amp;quot;The Right way&amp;quot;&lt;/span&gt; and &lt;span class="codeInline"&gt;text:go&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span class="codeInline"&gt;c.Title == &amp;quot;The Right way&amp;quot;&lt;/span&gt; or &lt;span class="codeInline"&gt;c.Text == &amp;quot;go&amp;quot;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;&lt;tr&gt;
&lt;td&gt;WildCard&lt;/td&gt;&lt;td&gt;&lt;span class="codeInline"&gt;amb?r&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span class="codeInline"&gt;c.ContactName.Match(&amp;quot;amb?r&amp;quot;)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;&lt;tr&gt;
&lt;td&gt;Prefix&lt;/td&gt;&lt;td&gt;&lt;span class="codeInline"&gt;amber*&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span class="codeInline"&gt;c.ContactName.StartsWith(&amp;quot;amber&amp;quot;)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;&lt;tr&gt;
&lt;td&gt;Fuzzy&lt;/td&gt;&lt;td&gt;&lt;span class="codeInline"&gt;roam~&lt;/span&gt; or &lt;span class="codeInline"&gt;roam~0.8&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span class="codeInline"&gt;c.ContactName.Like(&amp;quot;roam&amp;quot;)&lt;/span&gt; or &lt;span class="codeInline"&gt;c.ContactName.Like(&amp;quot;roam&amp;quot;, 0.8)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;&lt;tr&gt;
&lt;td&gt;Proximity&lt;/td&gt;&lt;td&gt;&lt;span class="codeInline"&gt;&amp;quot;jakarta apache&amp;quot;~10&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span class="codeInline"&gt;c.ContactName.Like(&amp;quot;jakarta apache&amp;quot;, 10)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;&lt;tr&gt;
&lt;td&gt;Inclusive Range&lt;/td&gt;&lt;td&gt;&lt;span class="codeInline"&gt;mod_date:[20020101 TO 20030101]&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span class="codeInline"&gt;c.ModifiedDate.Includes(&amp;quot;20020101&amp;quot;, &amp;quot;20030101&amp;quot;)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;&lt;tr&gt;
&lt;td&gt;Exclusive Range&lt;/td&gt;&lt;td&gt;&lt;span class="codeInline"&gt;title:{Aida TO Carmen&lt;/span&gt;}&lt;/td&gt;&lt;td&gt;&lt;span class="codeInline"&gt;c.Title.Between(&amp;quot;Aida&amp;quot;, &amp;quot;Carmen&amp;quot;)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;&lt;tr&gt;
&lt;td&gt;Boosting&lt;/td&gt;&lt;td&gt;&lt;span class="codeInline"&gt;jakarta^4 apache&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span class="codeInline"&gt;c.Title.Match(&amp;quot;jakarta&amp;quot;.Boost(4), apache)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;&lt;tr&gt;
&lt;td&gt;Boolean Or&lt;/td&gt;&lt;td&gt;&lt;span class="codeInline"&gt;&amp;quot;jakarta apache&amp;quot; OR jakarta&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span class="codeInline"&gt;where c.Match(&amp;quot;jakarta apache&amp;quot;) || c.Match(&amp;quot;jakarta&amp;quot;)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;&lt;tr&gt;
&lt;td&gt;Boolean And&lt;/td&gt;&lt;td&gt;&lt;span class="codeInline"&gt;&amp;quot;jakarta apache&amp;quot; AND &amp;quot;Apache Lucene&amp;quot;&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span class="codeInline"&gt;where c.Match(&amp;quot;jakarta apache&amp;quot;) &amp;amp;&amp;amp; c.Match(&amp;quot;Apache Lucene&amp;quot;)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;&lt;tr&gt;
&lt;td&gt;Boolean Not&lt;/td&gt;&lt;td&gt;&lt;span class="codeInline"&gt;&amp;quot;jakarta apache&amp;quot; NOT &amp;quot;Apache Lucene&amp;quot;&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span class="codeInline"&gt;where c.Match(&amp;quot;jakarta apache&amp;quot;) &amp;amp;&amp;amp; !c.Match(&amp;quot;Apache Lucene&amp;quot;)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;&lt;tr&gt;
&lt;td&gt;Required&lt;/td&gt;&lt;td&gt;&lt;span class="codeInline"&gt;+jakarta lucene&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span class="codeInline"&gt;c.Title.Match(&amp;quot;jakarta&amp;quot;.Require(), &amp;quot;lucene&amp;quot;)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;&lt;tr&gt;
&lt;td&gt;Grouping&lt;/td&gt;&lt;td&gt;&lt;span class="codeInline"&gt;(jakarta OR apache) AND website&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span class="codeInline"&gt;where (c.Title == &amp;quot;jakarta&amp;quot; || c.Title == &amp;quot;apache&amp;quot;) &amp;amp;&amp;amp; (c.Title == &amp;quot;website&amp;quot;)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;&lt;tr&gt;
&lt;td&gt;Native Syntax&lt;/td&gt;&lt;td&gt;ie. &lt;span class="codeInline"&gt;title:{+return +&amp;quot;pink panther&amp;quot;)&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span class="codeInline"&gt;c.Search(&amp;quot;title:(return +\&amp;quot;pink panther\&amp;quot;&amp;quot;)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt; &lt;br /&gt;&lt;b&gt;Future Release&lt;/b&gt;&lt;br /&gt;&lt;ol&gt;
&lt;li&gt;Unit Tests and Xml Comments&lt;/li&gt;&lt;li&gt;Aggregation&lt;/li&gt;&lt;li&gt;Filters&lt;/li&gt;&lt;li&gt;Performance Optimizations&lt;/li&gt;&lt;li&gt;Query Analyzers beyond &lt;span class="codeInline"&gt;StandardAnalayzer&lt;/span&gt;&lt;/li&gt;&lt;li&gt;OrderBy operation&lt;/li&gt;&lt;li&gt;Nested Queries &amp;amp; Joins&lt;/li&gt;&lt;li&gt;Updating the Index&lt;/li&gt;&lt;li&gt;Change Tracking&lt;/li&gt;
&lt;/ol&gt; &lt;br /&gt;&lt;b&gt;First Releases&lt;/b&gt;&lt;br /&gt;A first release for generating a simple index out of a database for mapping types to Lucene using LINQ is now available.  &lt;br /&gt;This is the first small piece of the puzzle.  &lt;br /&gt; &lt;br /&gt;&lt;a href="https://www.codeplex.com/Release/ProjectReleases.aspx?ProjectName=linqtolucene&amp;amp;ReleaseId=8017" class="externalLink"&gt;The Index Release&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;pre&gt;
[Document]
public class Customer 
{
  [Field(Store=FieldStore.Yes, Index=FieldIndex.No)] public string CustomerID { get; set; }
  [Field(Store=FieldStore.Yes, Index=FieldIndex.Tokenized)] public string CustomerName { get; set; }
}
 
IndexContext index = new IndexContext;
index.WriteIndex&amp;lt;Customer&amp;gt;();
&lt;/pre&gt; &lt;br /&gt;
&lt;/div&gt;</description><author>CVertex</author><pubDate>Tue, 22 Jul 2008 12:50:12 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Home 20080722125012P</guid></item><item><title>UPDATED RELEASE: 7. The Refactored Release (Jul 22, 2008)</title><link>http://www.codeplex.com/linqtolucene/Release/ProjectReleases.aspx?ReleaseId=15539</link><description>&lt;div&gt;
This release includes a large set of changes to the library:&lt;br&gt;&lt;ul&gt;
&lt;li&gt;New API that mirrors LINQ to SQL Table&amp;lt;T&amp;gt;&lt;/li&gt;&lt;li&gt;IndexSet for managing a collection of indexes&lt;/li&gt;&lt;li&gt;DatabaseIndexSet for making indexes from a LINQ to SQL Data Context&lt;/li&gt;&lt;li&gt;Centralized document and field details readers&lt;/li&gt;&lt;li&gt;New LINQ methods: Count, Skip, Take, First, Last, ElementAt&lt;/li&gt;&lt;li&gt;Mapping attributes can be added to a separate type&lt;/li&gt;&lt;li&gt;IHit for providing Relevance and DocumentId to domain tier&lt;/li&gt;&lt;li&gt;Lucene.Net Directory agnostic Index&amp;lt;T&amp;gt;&lt;/li&gt;&lt;li&gt;Refactored ObjectTranslation - abstract an interface for swappable translators in the future&lt;/li&gt;&lt;li&gt;Added PagedList for paging hits&lt;/li&gt;&lt;li&gt;An extra demonstration project comparing LINQ to XML to LINQ to Lucene.Net&lt;/li&gt;&lt;li&gt;IndexContext is analogous to the ASP.NET HttpContext with exposed locking semantics&lt;/li&gt;&lt;li&gt;Alot more Unit Tests using MbUnit&lt;/li&gt;&lt;li&gt;Batch Indexing - still a work in progress&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;</description><author></author><pubDate>Tue, 22 Jul 2008 12:45:51 GMT</pubDate><guid isPermaLink="false">UPDATED RELEASE: 7. The Refactored Release (Jul 22, 2008) 20080722124551P</guid></item><item><title>CREATED RELEASE: The Refactored Release (Jul 22, 2008)</title><link>http://www.codeplex.com/linqtolucene/Release/ProjectReleases.aspx?ReleaseId=15539</link><description>&lt;div&gt;
This release includes a large set of changes to the library:&lt;br&gt;&lt;ul&gt;
&lt;li&gt;New API that mirrors LINQ to SQL Table&amp;lt;T&amp;gt;&lt;/li&gt;&lt;li&gt;IndexSet for managing a collection of indexes&lt;/li&gt;&lt;li&gt;DatabaseIndexSet for making indexes from a LINQ to SQL Data Context&lt;/li&gt;&lt;li&gt;Centralized document and field details readers&lt;/li&gt;&lt;li&gt;New LINQ methods: Count, Skip, Take, First, Last, ElementAt&lt;/li&gt;&lt;li&gt;Mapping attributes can be added to a separate type&lt;/li&gt;&lt;li&gt;IHit for providing Relevance and DocumentId to domain tier&lt;/li&gt;&lt;li&gt;Lucene.Net Directory agnostic Index&amp;lt;T&amp;gt;&lt;/li&gt;&lt;li&gt;Refactored ObjectTranslation - abstract an interface for swappable translators in the future&lt;/li&gt;&lt;li&gt;Added PagedList for paging hits&lt;/li&gt;&lt;li&gt;An extra demonstration project comparing LINQ to XML to LINQ to Lucene.Net&lt;/li&gt;&lt;li&gt;IndexContext is analogous to the ASP.NET HttpContext with exposed locking semantics&lt;/li&gt;&lt;li&gt;Alot more Unit Tests using MbUnit&lt;/li&gt;&lt;li&gt;Batch Indexing - still a work in progress&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;</description><author></author><pubDate>Tue, 22 Jul 2008 12:45:14 GMT</pubDate><guid isPermaLink="false">CREATED RELEASE: The Refactored Release (Jul 22, 2008) 20080722124514P</guid></item><item><title>RELEASED: The Refactored Release (Jul 22, 2008)</title><link>http://www.codeplex.com/linqtolucene/Release/ProjectReleases.aspx?ReleaseId=15539</link><description>&lt;div&gt;
This release includes a large set of changes to the library:&lt;br&gt;&lt;ul&gt;
&lt;li&gt;New API that mirrors LINQ to SQL Table&amp;lt;T&amp;gt;&lt;/li&gt;&lt;li&gt;IndexSet for managing a collection of indexes&lt;/li&gt;&lt;li&gt;DatabaseIndexSet for making indexes from a LINQ to SQL Data Context&lt;/li&gt;&lt;li&gt;Centralized document and field details readers&lt;/li&gt;&lt;li&gt;New LINQ methods: Count, Skip, Take, First, Last, ElementAt&lt;/li&gt;&lt;li&gt;Mapping attributes can be added to a separate type&lt;/li&gt;&lt;li&gt;IHit for providing Relevance and DocumentId to domain tier&lt;/li&gt;&lt;li&gt;Lucene.Net Directory agnostic Index&amp;lt;T&amp;gt;&lt;/li&gt;&lt;li&gt;Refactored ObjectTranslation - abstract an interface for swappable translators in the future&lt;/li&gt;&lt;li&gt;Added PagedList for paging hits&lt;/li&gt;&lt;li&gt;An extra demonstration project comparing LINQ to XML to LINQ to Lucene.Net&lt;/li&gt;&lt;li&gt;IndexContext is analogous to the ASP.NET HttpContext with exposed locking semantics&lt;/li&gt;&lt;li&gt;Alot more Unit Tests using MbUnit&lt;/li&gt;&lt;li&gt;Batch Indexing - still a work in progress&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;</description><author></author><pubDate>Tue, 22 Jul 2008 12:45:14 GMT</pubDate><guid isPermaLink="false">RELEASED: The Refactored Release (Jul 22, 2008) 20080722124514P</guid></item><item><title>Created Issue: Built-in support for PagedList&lt;T&gt;</title><link>http://www.codeplex.com/linqtolucene/WorkItem/View.aspx?WorkItemId=5627</link><description>Calling LINQ_Lucene_expression.ToPagedList&amp;#40;&amp;#41; performs the search twice. Once for the Count, and once of the Skip and Take methods. By building in support for PagedList&amp;#60;T&amp;#62;, the double searches may be avoided.&lt;br /&gt;</description><author>CVertex</author><pubDate>Tue, 22 Jul 2008 09:29:24 GMT</pubDate><guid isPermaLink="false">Created Issue: Built-in support for PagedList&lt;T&gt; 20080722092924A</guid></item></channel></rss>