Java 如何配置SOLR服务器的拼写检查功能
我想使用MySql数据库实现Solr提供的拼写检查功能,但我不知道如何实现。Java 如何配置SOLR服务器的拼写检查功能,java,configuration,solr,lucene,Java,Configuration,Solr,Lucene,我想使用MySql数据库实现Solr提供的拼写检查功能,但我不知道如何实现。 这里是我想做的基本流程 我有一个简单的inputText(在JSF中),如果我键入单词shwo,对OutputLabel的响应应该是show 首先,我使用以下工具和框架: JBoss应用服务器6.1。 日食 JPA JSF(Primefaces) 到目前为止我已经完成的步骤: 第1步: 从以下位置下载Solr服务器: 提取内容 第二步: 添加到环境变量(其中有solr服务器): 第三步: 打开solr-war并添加到s
这里是我想做的基本流程 我有一个简单的inputText(在JSF中),如果我键入单词shwo,对OutputLabel的响应应该是show 首先,我使用以下工具和框架: JBoss应用服务器6.1。
日食
JPA
JSF(Primefaces) 到目前为止我已经完成的步骤: 第1步: 从以下位置下载Solr服务器: 提取内容 第二步: 添加到环境变量(其中有solr服务器): 第三步: 打开solr-war并添加到solr.war\WEB-INF\WEB.xml的env条目-(简单的方法) 我还添加了data-config.xml
<?xml version="1.0" encoding="UTF-8" ?>
<dataConfig>
<dataSource type="JdbcDataSource" name="altadict"
driver="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/myproject"
user="root"
password=""
/>
<document name="myproject">
<entity name="myproject" query="SELECT * FROM words">
<field column="Id" name="Id" />
<field column="Cuvint" name="Cuvint" />
<field column="TradDiac" name="TradDiac" />
<field column="Explicatie" name="Explicatie" />
<field column="TipCuvint" name="TipCuvint" />
<field column="ItalicParant" name="ItalicParant" />
</entity>
</document>
</dataConfig>
<!-- altadict Request Handler -->
<requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler">
<lst name="defaults">
<str name="config">data-config.xml</str>
</lst>
</requestHandler>
<requestHandler name="/spell" class="solr.SearchHandler" startup="lazy">
<lst name="defaults">
<str name="df">Cuvint</str>
<str name="spellcheck.dictionary">default</str>
<str name="spellcheck">on</str>
<str name="spellcheck.extendedResults">true</str>
<str name="spellcheck.count">10</str>
<str name="spellcheck.maxResultsForSuggest">5</str>
<str name="spellcheck.collate">true</str>
<str name="spellcheck.collateExtendedResults">true</str>
<str name="spellcheck.maxCollationTries">10</str>
<str name="spellcheck.maxCollations">5</str>
</lst>
<arr name="last-components">
<str>spellcheck</str>
</arr>
</requestHandler>
<searchComponent name="spellcheck" class="solr.SpellCheckComponent">
<str name="queryAnalyzerFieldType">string</str> <!-- Replace with Field Type of your schema -->
<lst name="spellchecker">
<str name="name">default</str>
<str name="field">examplew</str> <!-- Replace with field name as per your scheme -->
<str name="spellcheckIndexDir">./spellchecker</str>
<str name="buildOnOptimize">true</str>
<str name="buildOnCommit">true</str>
</lst>
<!-- a spellchecker that uses a different distance measure -->
<lst name="spellchecker">
<str name="name">jarowinkler</str>
<str name="field">spell</str>
<str name="distanceMeasure">org.apache.lucene.search.spell.JaroWinklerDistance</str>
<str name="spellcheckIndexDir">./spellchecker2</str>
</lst>
</searchComponent>
schema.xml
<field name="Id" type="tlong" indexed="true" stored="true" required="true"/>
<field name="Cuvint" type="string" indexed="true" stored="true" required="true"/>
<field name="TradDiac" type="string" indexed="true" stored="true" required="true"/>
<field name="Explicatie" type="string" indexed="true" stored="true"/>
<field name="TipCuvint" type="string" indexed="true" stored="true" required="true"/>
<field name="ItalicParant" type="string" indexed="true" stored="true"/>
solrconfig.xml
<?xml version="1.0" encoding="UTF-8" ?>
<dataConfig>
<dataSource type="JdbcDataSource" name="altadict"
driver="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/myproject"
user="root"
password=""
/>
<document name="myproject">
<entity name="myproject" query="SELECT * FROM words">
<field column="Id" name="Id" />
<field column="Cuvint" name="Cuvint" />
<field column="TradDiac" name="TradDiac" />
<field column="Explicatie" name="Explicatie" />
<field column="TipCuvint" name="TipCuvint" />
<field column="ItalicParant" name="ItalicParant" />
</entity>
</document>
</dataConfig>
<!-- altadict Request Handler -->
<requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler">
<lst name="defaults">
<str name="config">data-config.xml</str>
</lst>
</requestHandler>
<requestHandler name="/spell" class="solr.SearchHandler" startup="lazy">
<lst name="defaults">
<str name="df">Cuvint</str>
<str name="spellcheck.dictionary">default</str>
<str name="spellcheck">on</str>
<str name="spellcheck.extendedResults">true</str>
<str name="spellcheck.count">10</str>
<str name="spellcheck.maxResultsForSuggest">5</str>
<str name="spellcheck.collate">true</str>
<str name="spellcheck.collateExtendedResults">true</str>
<str name="spellcheck.maxCollationTries">10</str>
<str name="spellcheck.maxCollations">5</str>
</lst>
<arr name="last-components">
<str>spellcheck</str>
</arr>
</requestHandler>
<searchComponent name="spellcheck" class="solr.SpellCheckComponent">
<str name="queryAnalyzerFieldType">string</str> <!-- Replace with Field Type of your schema -->
<lst name="spellchecker">
<str name="name">default</str>
<str name="field">examplew</str> <!-- Replace with field name as per your scheme -->
<str name="spellcheckIndexDir">./spellchecker</str>
<str name="buildOnOptimize">true</str>
<str name="buildOnCommit">true</str>
</lst>
<!-- a spellchecker that uses a different distance measure -->
<lst name="spellchecker">
<str name="name">jarowinkler</str>
<str name="field">spell</str>
<str name="distanceMeasure">org.apache.lucene.search.spell.JaroWinklerDistance</str>
<str name="spellcheckIndexDir">./spellchecker2</str>
</lst>
</searchComponent>
data-config.xml
库文特
违约
在…上
真的
10
5.
真的
真的
10
5.
主页教程:
Solr Wiki:
---solrj官方文档
解决方案配置:
防堆叠溢出:
Solr数据库集成:
Solr拼写检查:
我真的需要你的帮助。问候。使用DataImoprtHandler
将您的数据库导入到Solr中,以便能够在Solr中搜索拼写。1.我如何与数据库建立数据库连接并搜索内容,以查看是否有匹配的单词
您需要将数据从MySql索引到Solr。
这可以通过构建一个应用程序从MySql读取记录并将数据提供给Solr来实现。
或者,正如已经回答的那样,使用它将使您能够
连接到MySql,加载数据并将其索引到Solr中。
此外,还允许您执行增量更新
2.如何进行配置(solr config.xml、shema.xml等)
拼写检查器的字段应标记为文本分析。
由于字段标记为字符串,因此没有标记。
Schema.xml
此外,对于SoReCuff.xml,替换要考虑拼写建议
的字段
examplew
检查是否有错误
3.如何从我的视图(xhtml)发送字符串,以便solr服务器知道他在寻找什么
通常,我们在Solr请求中结合搜索和拼写建议来实现此功能。
当我们没有从Solr获得任何结果时,我们会检查拼写检查建议是否可用,并显示为您的意思是建议吗
此外,我们没有等待拼写建议,而是向用户提供提前输入建议,以防止往返服务器
4.如何从Cuvine数据库列获取正确的单词,例如wodr I希望solr返回单词
检查以配置拼写检查,这应该会提供建议。同意您的意见,但根据我所读的内容,我需要创建一个schema.xml,其中包含数据库中的确切字段,请将其添加到solr config.xml。我需要一些傻瓜示例:)+1对于含义,如我所知,SOLR4.4-4.5是无模式的。阅读,如何在不创建模式的情况下进行。但是,如果只想对1个字段进行拼写,则很容易为每个文档只配置1个字段(使用Solr随附的示例中的一个字段)。
<!-- altadict Request Handler -->
<requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler">
<lst name="defaults">
<str name="config">data-config.xml</str>
</lst>
</requestHandler>
<requestHandler name="/spell" class="solr.SearchHandler" startup="lazy">
<lst name="defaults">
<str name="df">Cuvint</str>
<str name="spellcheck.dictionary">default</str>
<str name="spellcheck">on</str>
<str name="spellcheck.extendedResults">true</str>
<str name="spellcheck.count">10</str>
<str name="spellcheck.maxResultsForSuggest">5</str>
<str name="spellcheck.collate">true</str>
<str name="spellcheck.collateExtendedResults">true</str>
<str name="spellcheck.maxCollationTries">10</str>
<str name="spellcheck.maxCollations">5</str>
</lst>
<arr name="last-components">
<str>spellcheck</str>
</arr>
</requestHandler>
<searchComponent name="spellcheck" class="solr.SpellCheckComponent">
<str name="queryAnalyzerFieldType">string</str> <!-- Replace with Field Type of your schema -->
<lst name="spellchecker">
<str name="name">default</str>
<str name="field">examplew</str> <!-- Replace with field name as per your scheme -->
<str name="spellcheckIndexDir">./spellchecker</str>
<str name="buildOnOptimize">true</str>
<str name="buildOnCommit">true</str>
</lst>
<!-- a spellchecker that uses a different distance measure -->
<lst name="spellchecker">
<str name="name">jarowinkler</str>
<str name="field">spell</str>
<str name="distanceMeasure">org.apache.lucene.search.spell.JaroWinklerDistance</str>
<str name="spellcheckIndexDir">./spellchecker2</str>
</lst>
</searchComponent>
<field name="Cuvint" type="text" indexed="true" stored="true" required="true"/>
<str name="field">examplew</str> <!-- Replace with field name as per your scheme -->